import axios from './axios/index'
import {
	useStore
} from '@/store/index'
import Fetcher from './axios/lib/adapter/Fetcher'
import {
	showToast,
	showModal
} from '@/utils/toast'
import {
	isRefreshToken
} from '@/utils/httpUtil'

const fetcher = new Fetcher();

// 接口地址
const URL = 'https://pos.bestyxb.com/agent-api'; // 测试环境(外网)
// export const URL = ''; // 预生产环境
// export const URL = ''; // 正式环境

let instance = axios.create({
	baseURL: URL,
	timeout: 60000,
	fetcher: fetcher,
	showError: true, // 统一显示错误提示
	carryToken: true, // 请求头是否携带token
})

instance.interceptors.request.use(config => {
	// console.log("c=" + JSON.stringify(config))
	const store = useStore()
	const token = store.tokenInfo?.token

	if (token) {
		if (config.carryToken) {
			config.header = {
				Authorization: 'Bearer ' + token
			}
		}

	}
	return config;
}, error => {
	return Promise.reject(error);
})

instance.interceptors.response.use(response => {
	// console.log("response " + JSON.stringify(response))
	if (response.data.code == 200) {
		return response.data.data;
	} else {
		showToast(response.data.message)
	}

}, error => {
	console.log("response error" + JSON.stringify(error))
	if (!error.data.code) {
		showToast(error.data.message)
	}

	if (error.data.code === 404) {
		showToast("Error: 404")

	}
	if (error.data.code === 401 || error.data.code === 402) {
		//token失效
		showToast("token失效，请重新登录", )

		redirectToLogin()
	}
	if (error.data.code !== 200) {
		showToast(error.data.message)
	}
	// switch (error.statusCode) {
	// 	case 401:
	// 	case 402:
	// 		redirectToLogin()
	// 		break
	// 	default:
	// 		if (error.data.code === 'REFRESH_TOKEN_EXPIRE') {
	// 			redirectToLogin();
	// 		} else if (error.config.showError) {
	// 			let msg7 = error.data.payload.message && error.data.payload.message.length > 7 ? true : false;
	// 			let err7 = error.data.payload.error && error.data.payload.error.length > 7 ? true : false;
	// 			if (msg7 || err7) {
	// 				showModal({
	// 					title: '错误信息',
	// 					content: error.data.payload.message || error.data.payload.error
	// 				});
	// 			} else {
	// 				showToast(error.data.payload.message || error.data.payload.error)
	// 			}
	// 		}
	// 		break
	// }
	return Promise.reject(error);
})

// 重定向到登录页
function redirectToLogin() {
	const store = useStore();
	store.clearStorage();
	uni.reLaunch({
		url: '/pages/login/index'
	});
}


function $request(config) {
	return instance.request(config)
}

function $get(url, config) {
	return instance.get(url, config)
}

function $post(url, data, config) {
	return instance.post(url, data, config)
}

function $put(url, data, config) {
	return instance.put(url, data, config)
}

function $delete(url, config) {
	return instance.delete(url, config)
}

/**
 * 中断网络请求
 */
function abort() {
	fetcher.abort()
}

export {
	$get,
	$post,
	$put,
	$delete,
	abort
}
export default $request;